package smtpserver

import (
	"net"
	"time"
)

// NetConnAdapter 将 net.Conn 适配为 Connection 接口
type NetConnAdapter struct {
	conn net.Conn
}

// NewNetConnAdapter 创建新的网络连接适配器
func NewNetConnAdapter(conn net.Conn) *NetConnAdapter {
	return &NetConnAdapter{conn: conn}
}

// Read 实现 Connection 接口的 Read 方法
func (a *NetConnAdapter) Read(b []byte) (int, error) {
	return a.conn.Read(b)
}

// Write 实现 Connection 接口的 Write 方法
func (a *NetConnAdapter) Write(b []byte) (int, error) {
	return a.conn.Write(b)
}

// Close 实现 Connection 接口的 Close 方法
func (a *NetConnAdapter) Close() error {
	return a.conn.Close()
}

// RemoteAddr 实现 Connection 接口的 RemoteAddr 方法
func (a *NetConnAdapter) RemoteAddr() net.Addr {
	return a.conn.RemoteAddr()
}

// SetReadDeadline 实现 Connection 接口的 SetReadDeadline 方法
func (a *NetConnAdapter) SetReadDeadline(t time.Time) error {
	return a.conn.SetReadDeadline(t)
}

// SetWriteDeadline 实现 Connection 接口的 SetWriteDeadline 方法
func (a *NetConnAdapter) SetWriteDeadline(t time.Time) error {
	return a.conn.SetWriteDeadline(t)
}

// LocalAddr 实现 Connection 接口的 LocalAddr 方法
func (a *NetConnAdapter) LocalAddr() net.Addr {
	return a.conn.LocalAddr()
}

// SetDeadline 实现 Connection 接口的 SetDeadline 方法
func (a *NetConnAdapter) SetDeadline(t time.Time) error {
	return a.conn.SetDeadline(t)
}
